package leetcode.editor.cn;

//给你一个整型数组 nums ，在数组中找出由三个数组成的最大乘积，并输出这个乘积。 
//
// 
//
// 示例 1： 
//
// 
//输入：nums = [1,2,3]
//输出：6
// 
//
// 示例 2： 
//
// 
//输入：nums = [1,2,3,4]
//输出：24
// 
//
// 示例 3： 
//
// 
//输入：nums = [-1,-2,-3]
//输出：-6
// 
//
// 
//
// 提示： 
//
// 
// 3 <= nums.length <= 10⁴ 
// -1000 <= nums[i] <= 1000 
// 
// Related Topics 数组 数学 排序 👍 338 👎 0

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MaximumProductOfThreeNumbers {
    public static void main(String[] args) {
        Solution solution = new MaximumProductOfThreeNumbers().new Solution();

    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int maximumProduct(int[] nums) {
            int length = nums.length;
            if (length == 3) {
                return nums[0] * nums[1] * nums[2];
            }
            Arrays.sort(nums);
            int max1 = nums[length - 1] * nums[length - 2] * nums[length - 3];
            int max2 = nums[0] * nums[1] * nums[2];
            int max3 = nums[0] * nums[1] * nums[length - 1];
            int max4 = nums[0] * nums[length - 2] * nums[length - 1];
            List<Integer> list = new ArrayList<>();
            list.add(max1);
            list.add(max2);
            list.add(max3);
            list.add(max4);
            Integer max = list.stream().max(Integer::compare).get();

            return max;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}